import store from '@/store/index.js'
import BASEURL from '@/config/config.js'


/**
 * 吐司弹窗
 * @param { String } title 
 * @param { String } icon 
 */
function toast (title,icon = "none") {
	uni.showToast({
		title,
		icon
	})
}

/**
 * 弹出框
 * @param { String } title 
 * @param { String } content 
 * @param { Function } callback 
 */
function modal (title = "提示",content,callback = function(){}) {
	uni.showModal({
		title,
		content,
		success(res){
			if(res.confirm){
				callback()
			}
		}
	})
}

/**
 * 选取图片并返回图片地址数组
 * @param {Number} count 选取图片数量
 * @param {String} sourceType 选取图片来源  all 相册和相机  album 相册   camera 相机
 */
function chooseImg (count = 9,sourceType = "all") {
	return new Promise((resolve,reject) => {
		let list = []
		uni.chooseImage({
			count,
			sourceType: sourceType == "all" ? ["album","camera"] : [sourceType],
			success(res){
				res.tempFilePaths.forEach(item => {
					list.push(item)
				})
				resolve(list)
			},
			fail(err){
				reject(err)
			}
		})
	})
}

/**
 * 
 * @param {*} phoneNumber 手机号
 */
function isPhone (phoneNumber) {
	let reg = /^1[3-9]\d{9}$/
	if(reg.test(phoneNumber)){
		return true
	}else{
		return false
	}
}

/**
 * 日期实例化
 * @param {Number} date 时间戳 
 */
function formatDate (date,flag = false) {
	var date = new Date(date * 1000) //如果date为13位不需要乘1000
	var Y = date.getFullYear() + '-'
	var M =
	  (date.getMonth() + 1 < 10
	    ? '0' + (date.getMonth() + 1)
	    : date.getMonth() + 1) + '-'
	var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
	var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
	var m =
	  (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
	var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
	if(flag)
	{
		  return Y + M + D
	}
	else
	{
		  return Y + M + D + h + m + s
	}
}

/**
 * 跳转至登录页面
 * 后期根据需要更改跳转逻辑
 */
function goLogin () {
	uni.navigateTo({
		url: "/pages/login/index"
	})
}


/**
 * 数组排序
 * @param { Array } array 需要排序的数组
 * @param { String } type 升序或降序 up 升序 down 降序
 * @param { Boolean } isObject 是否为对象数组
 * @param { String } key 根据key值排序
 */
function arraySort (array,type = "up",isObject = false,key = "") {
	if (!isObject) {
		if (type == "up") {
			array.sort((a,b) => {
				return a - b
			})
			return array
		}else{
			array.sort((a,b) => {
				return b - a
			})
			return array
		}
	}else{
		if (type == "up") {
			array.sort((a,b) => {
				return a[key] - b[key]
			})
			return array
		}else{
			array.sort((a,b) => {
				return b[key] - a[key]
			})
			return array
		}
	}
}

/**
 * 数组去重
 * @param {Array} array
 */
function arrayClearLoop (array) {
	return [...new Set(array)]
}

/**
 * 上传文件
 * @param { String } filePath 本地文件临时地址组成的数组
 * @param { String } name 文件对应的key
 * @param { Object } formData 上传额外的参数
 * 上传多个文件时，需循环调用此方法，当最后一次执行时，再调用.then()方法
 */
function uploadFiles (filePath,name,formData) {
	return new Promise((resolve,reject) => {
		uni.uploadFiles({
			url: BASEURL,
			filePath,
			name,
			formData,
			success (res) {
				resolve(res)
			},
			fail (err) {
				reject(err)
			}
		})
	})
}

/**
 * navigateTo跳转
 * @param { options } Object 跳转需要携带的参数
 * @param { url } url 跳转页面的路径
 */
function navigateTo (options = {},url) {
	let str = ""
	for (let key in options) {
		str += (String(key) + '=' + String(options[key]) + '&')
	}
	uni.navigateTo({
		url: `${url}?${str}`
	})
}



export default {
	toast,
	modal,
	chooseImg,
	isPhone,
	formatDate,
	goLogin,
	arraySort,
	arrayClearLoop,
	uploadFiles,
	navigateTo
}